package com.jichangxiu.server.platform.service;

import com.jichangxiu.common.entity.bo.PageData;
import com.jichangxiu.common.entity.bo.Record;
import com.jichangxiu.framework.mybatis.BaseService;
import com.jichangxiu.server.platform.entity.po.PlatformMenu;
import com.jichangxiu.server.platform.entity.vo.PlatformMenuAddVo;
import com.jichangxiu.server.platform.entity.vo.PlatformMenuEditVo;
import com.jichangxiu.server.platform.entity.vo.PlatformMenuQueryVo;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * PlatformMenuService:
 *
 * @author Jcx
 * @create 2023-03-08 21:13
 */
public interface PlatformMenuService extends BaseService<PlatformMenu> {

    /**
     * 新增菜单
     *
     * @param platformMenuAddVo 菜单视图对象
     * @return 是否成功
     */
    public String add(PlatformMenuAddVo platformMenuAddVo);

    /**
     * 多选级联删除菜单
     *
     * @param menuIds 菜单ID列表
     * @return 是否成功
     */
    public Boolean del(List<String> menuIds);

    /**
     * 修改菜单信息
     *
     * @param platformMenuEditVo 菜单视图对象
     * @return 是否成功
     */
    public Boolean edit(PlatformMenuEditVo platformMenuEditVo);

    /**
     * 根据ID获取树形菜单详情
     *
     * @param menuId 菜单ID
     * @return 树形菜单详情
     */
    public Record info(@NotBlank(message = "菜单ID不能为空") String menuId);

    /**
     * 获取所有不需要租户购买的菜单列表
     *
     * @return 菜单列表
     */
    public List<PlatformMenu> getNotBuyMenuList();

    /**
     * 根据用户ID获取该用户所拥有的树形菜单列表
     *
     * @param userId 用户ID
     * @return 树形菜单列表
     */
    public List<Record> getMenuListByUser(String userId);

    /**
     * 分页查询树形菜单列表
     *
     * @param platformMenuQueryVo 菜单视图对象
     * @return 分页树形菜单列表
     */
    public PageData<Record> pageList(PlatformMenuQueryVo platformMenuQueryVo);

}
